home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 18 / AMIGAplus Sonderheft 18 (1999)(ICP)(DE)[!].iso / Forum / MichaelRoth / 3-3-99 / pw / passwort.asm < prev    next >
Assembly Source File  |  1998-08-15  |  6KB  |  205 lines

  1. ;// Autor
  2. ;                            %
  3. ;                          %%*%%
  4. ;                        %%%* *%%%
  5. ;                      %%%%* B *%%%%
  6. ;                    %%%%%*  T  *%%%%%
  7. ;                  %%%%%%*   B   *%%%%%%
  8. ;                %%%%%%%*    1    *%%%%%%%
  9. ;              %%%%%%%%*     3     *%%%%%%%%
  10. ;          *%%%%%%%%%%*      M      *%%%%%%%%%%*
  11. ;        %%%%%%%%%%%%*---------------*%%%%%%%%%%%%
  12. ;       %%              A M I G A                %%
  13. ;      %%      B i l l y   T h e   B y t e        %%
  14. ;       %%        © 1997  Michael Roth           %%
  15. ;        %%%%%%%%%%%%*---------------*%%%%%%%%%%%%
  16. ;          *%%%%%%%%%%*      D      *%%%%%%%%%%*
  17. ;              %%%%%%%%*     A     *%%%%%%%%
  18. ;                %%%%%%%*    C    *%%%%%%%
  19. ;                  %%%%%%*   6   *%%%%%%
  20. ;                    %%%%%*  9  *%%%%%
  21. ;                      %%%%* 8 *%%%%
  22. ;                        %%%* *%%%
  23. ;                          %%*%%
  24. ;                            %
  25. ;\\
  26.          xref   _aslfilereq
  27. anzahlzeich     equ 5
  28. maxlength       equ 80
  29. ;// Include
  30.          Include  assem:macro/Dir
  31.          Include  assem:macro/Exec.m
  32.          Include  assem:macro/Dos.m
  33.          Include  reqtool.m
  34.          Include  asl.m
  35. ;\\
  36.  
  37. ;//Open Libs
  38.          OpenDos    0
  39.          bne        .12
  40.          rts
  41. .12
  42.          OpenReqTool    38
  43.          bne            .1
  44.          rts
  45. .1
  46. ;\\
  47.  
  48. ;// FileReq
  49.          lea       asltag,a0
  50.          lea       filename,a1
  51.          move.l    #512,d3
  52.          bsr       _aslfilereq                   ; written by DAC698
  53. ;\\
  54.  
  55. ;// Request
  56.          lea       positionen,a1
  57.          move.l    #80,d0
  58.          lea       reqtitle,a2
  59.          move.l    #0,a3
  60.          lea       reqtag,a0
  61.          reqtool   rtGetStringA
  62.  
  63.  
  64.  
  65.  
  66. ;\\
  67.  
  68. ;// File Öffnen und lesen
  69.          move.l     #filename,d1
  70.          move.l     #MODE_OLDFILE,d2
  71.          Dos        Open
  72.          bne        .openok
  73.          bra        cleanup
  74. .openok
  75.          move.l     d0,fh
  76.  
  77.          move.l     d0,d1
  78.          move.l     #outputpuffer,d2
  79.          move.l     #maxlength,d3
  80.          Dos        Read
  81. ;\\
  82.  
  83. ;// Auswerten der Eingabe in Zahlen
  84. ; Schwäche der Routine: wenn ein User scshwachsinniger weise mehr als 80 Zeichen
  85. ; verbraucht: Enfocer htt, da ich dann fremde sachen auslese...
  86.  
  87.          lea       positionen,a3
  88.          lea       outputpuffer,a4
  89.          lea       outputpuffer2,a5
  90. .loop
  91.          cmp.b     #"9",(a3)+                    ; Alle Zeichen vor erster
  92.          bhi       .loop                         ; Zahl weglassen
  93.          cmp.b     #"0",-1(a3)
  94.          blo       .loop
  95.  
  96.          lea       -1(a3),a3                     ; Adresse wegen einem (ax)+ zuviel
  97.                                                  ; reduzieren
  98.          move.w    #anzahlzeich-1,d6             ; Durchläufe -1 wegen DBcc
  99. .loop1
  100.          move.l    a3,d7                         ; startadresse merken
  101. .loop2
  102.          cmp.b     #"9",(a3)+                    ; Endadresse auswerten
  103.          bhi.s     .next
  104.          cmp.b     #"0",-1(a3)                   ; Endadresse auswerten
  105.          blo.s     .next
  106. ;         cmp.b     #0,-1(a3)                      ; Prüfen ob 0 Byte
  107. ;         beq       cleanup                       ; Wenn ja String zu ende bevor alles geschliffen ist -> Abbruch
  108.          bra       .loop2                        ; Nexte schleife
  109. .next
  110.          move.b    #0,-1(a3)                     ; NullByte Setzen
  111.  
  112.          move.l    d7,d1                         ; Startadresse nach d1 (Ist nun ein Nullterminirter Str)
  113.          move.l    #zahl,d2                      ; Buffer nach D2
  114.          Dos       StrToLong                     ; Wandeln lassen (Zufaul das selbst zu tun)
  115.  
  116.          move.l    zahl,d2                       ; Zal nach D2
  117.          move.b    -1(a4,d2.l),(a5)+             ; Auslesen des Zeichens. 1 in realität entspricht 0 bei Computer; deswegen -1(xxx)
  118.          dbra      d6,.loop1                     ; Nexte schleife
  119. ;\\
  120.  
  121. ;// Schreiben des Passwortsfragmentes nach fileout
  122.          move.l   #fileout,d1
  123.          move.l   #MODE_NEWFILE,d2
  124.          Dos      Open
  125.          move.l   d0,d7
  126.          bne      .openok2
  127.          bra      cleanup
  128. .openok2
  129.  
  130.          move.l   d0,d1
  131.          move.l   #outputpuffer2,d2
  132.          move.l   #anzahlzeich+1,d3
  133.          Dos      Write
  134.  
  135.          move.l   d7,d1
  136.          Dos      Close
  137. ;\\
  138.  
  139. ;//cleanup
  140. cleanup
  141.          move.l    fh,d1
  142.          beq       1$
  143.          Dos       Close
  144. 1$
  145.          closedos
  146.          closereqtool
  147. ;\\
  148.          rts
  149.  
  150. ;//Data
  151.  DATA
  152.  CNOP 0,4
  153. asltag
  154.          dc.l     ASLFR_TitleText,title
  155.          dc.l     ASLFR_DoPatterns,TRUE
  156.          dc.l     ASLFR_InitialDrawer,drawer
  157.          dc.l     ASLFR_InitialPattern,patt
  158.          dc.l     0,0
  159. reqtag
  160.          dc.l     RTGS_TextFmt,reqtext
  161.          dc.l     RTGS_Flags,GSREQF_CENTERTEXT
  162.          dc.l     0,0
  163. reqtitle
  164.          dc.b     "Enter your Offsets",0
  165. reqtext
  166.          dc.b     "Enter your Offsets. For Example:",10
  167.          dc.b     "12.5.69.4.3",10
  168.          dc.b     "12 5 69 4 3",10
  169.          dc.b     "12A5B69s4a3",0
  170. title
  171.          dc.b     "Select your PassWordFile",0
  172. drawer
  173.          dc.b     "pp:PassWort",0
  174. patt
  175.          dc.b     "#?.pw",0
  176.  
  177. fileout  dc.b     "ram:passwort.bin",0
  178. outputpuffer2
  179.          ds.b        anzahlzeich
  180.          dc.b        13
  181.  
  182.  BSS
  183.          CNOP 0,4
  184. filehandle
  185.          ds.l        0
  186. positionen
  187.          ds.b        maxlength
  188. table
  189.          ds.b        anzahlzeich
  190.  cnop 0,4
  191. LengthOfFile
  192.          ds.l        0
  193.  
  194.  
  195.  BSS
  196.  CNOP 4,0
  197. filename ds.l      128
  198. outputbuffer
  199. outputpuffer
  200.          ds.b        maxlength
  201.  CNOP 0,4
  202. zahl     ds.l        1
  203. fh       ds.l        1
  204. ;\\
  205.